Thermal printers are commonly employed to produce high resolution labels, bar codes and the like. Typically, a processor, such as for example a personal computer (PC), is initially utilized to lay out a particular label or other item to be printed. The material to be printed is then loaded into a special purpose controller, which is normally microprocessor based, the thermal printer being operated from the controller.
Such microprocessor based controllers have a number of limitations and other disadvantages. First, such controllers are usually relatively expensive. The high cost of these units is disadvantageous both because of the initial cost to the customer, and because the cost makes it impractical to merely swap a controller in the field if problems develop, requiring expensive service calls and other maintenance problems.
A second problem with controllers of this type is that their features are frozen at the time the operating program for the controller is burned into the controller ROM. While as many features as possible are normally fit into the limited memory space available, a simple change like providing a non-standard font would generally require creating a special version of the ROM. Since the ROM is generally not considered a user replaceable part, the cost of upgrades to either provide new features or to fix bugs is relatively high.
Finally, microprocessor based controllers are relatively large, the controller board being as large as 5 X 8 inches. In some applications, where space is limited, the size of such boards may make it impractical to use a thermal printer; and in any event, more careful, more expensive design may be required in order to accommodate the board on a standard printer.
One potential solution to the various problems discussed above is to use the same PC or other computer which was used to generate the item to be printed to also control the thermal printer. This would eliminate the requirement for a separate microprocessor-based controller, thus presumably reducing controller costs, and would provide far greater flexibility in that a software based system could be upgraded by merely providing a new disk or other storage medium containing a desired programming change. It might also be possible to make such changes on line to a number of printers in a system through the use of modems or other standard networking techniques.
However, there are a number of problems in operating a thermal printer directly from a PC or other selected processor which have heretofore prevented the operation of thermal printers in this way. The first problem is that the strobes used to control the energizing of the thermal elements of the printer print head must be precisely controlled in duration so that the image is dark enough to be easily visible without causing over exposing of the paper or other medium being printed on. Relatively small variations in strobe time can result in unacceptable print quality, or even damage to the print head. However, since processors which may be utilized to control the printer may have differing operating speeds, even though they are capable of running the same software, there has been some difficulty in the past in designing such a computer/thermal printer interface which provides good print quality regardless of the operating speed of the processor.
Another problem is that, while printing may be accomplished more rapidly if an entire line of data to be printed is strobed at the same time, this results in a very high peak current during strobing. The requirement for such high peak currents may be unacceptable in many applications. Therefore, a line of data to be printed is typically divided into a number of sections, each of which may be independently strobed. Thus, depending on the acceptable peak current for the system, it may be desirable to strobe each of the sections of the line separately, or to strobe some selected combination of two or more of the sections simultaneously. It is preferable that the strobing sequence for each line to be printed, which line may for example not have data in all byte positions, be program controllable so as to permit any one or more sections for the line to be strobed during a given strobe cycle, and thus to provide maximum flexibility. Current microprocessor-based systems do not provide this capability.
Another factor which has heretofore limited the use of a personal computer to control a thermal printer is the limited number of output lines from the parallel port of personal computers. This port does not contain enough lines to simultaneously transfer all of the data, controls and strobes required to effectively operate a thermal printer.
A need therefore exists for an improved interface for permitting a thermal printer to be operated directly from a personal computer or other general purpose processor rather than from a special purpose controller, thus providing greater flexibility in the operation of the printer while reducing costs and minimizing controller space requirements. Such an interface should permit processors having different operating speeds to be utilized without affecting strobe duration which is accurately controlled. The interface should also permit peak current to be controlled by flexibly strobing one or more sections of a line to be printed during each strobe cycle and should permit all required data and strobes to be passed through the single parallel port from the processor.